iT邦幫忙

2021 iThome 鐵人賽

DAY 6
1
AI & Data

機器學習應用於語音相關服務系列 第 6

Day06 - 端到端(end-to-end)語音辨識-CTC part 2

  • 分享至 

  • xImage
  •  

前一天提到說 CTC 提出了一個新的概念: 空白(blank),但在最開始的 CTC 設計中是沒有使用空白的,只有移除連續的相同字母,但是這樣會產生兩個問題:

  1. 無法預測出連續兩個相同字母的單字,例如:hello,在CTC中會刪除連續相同
    的字母,因此最後預測的結果會是 helo
  2. 無法預測出一句完整的話,只能預測出一個單字。因為缺乏空白,CTC 無法表
    示出單字與單字之間停頓的部分,因此只能預測出一個單字,或者將一句話中
    的單字全部連接起來

在解碼部份,理想上是以最大機率的序列 https://chart.googleapis.com/chart?cht=tx&chl=l 作為輸入資料 x 的預測結果
https://chart.googleapis.com/chart?cht=tx&chl=l%5E%7B*%7D%3D%5Cargmax_%7Bl%7Dp(l%7Cx)

CTC 在實作上有兩個解碼方法:最佳路徑解碼(Best path decoding)前綴搜尋解
碼(Prefix path decoding)
。最佳路徑解碼的作法是選取機率最大的路徑所對應到的序列
作為預測結果,如下:
https://chart.googleapis.com/chart?cht=tx&chl=l%5E%7B*%7D%5Capprox%20F(%5Cpi%5E%7B*%7D)%2C%20where%5C%20%5Cpi%5E%7B*%7D%3D%5Cargmax_%7B%5Cpi%7Dp(%5Cpi%7Cx)

而機率最大的路徑可以透過串聯每一個時間點最大機率的輸出標註來得到,但是在
某些情況下這樣的作法不一定會得到最佳解,如下圖 1,若是選擇機率最大的路徑
會得到空白,但是輸出是 'A' 的所有可能路徑的總和卻比'空白'的機率來的高。
綴搜尋解碼
是透過沿著有效路徑計算累積機率最大的作為預測結果,如下圖 2,圖
中的 X 和 Y 表示擴展節點,e 表示停止在其父節點。擴展節點上方的數字表示路徑從
頭到這點的機率。e 結點上方的數字表示停在其父節點的機率。我們將根(Root)視為
第0層,第一層的 Y 不往下擴展是因為同層的 X 和 X 下層的 Y 的機率都比他高。從Alex
Graves 的實驗得知,前綴搜尋解碼在預測上會比使用最佳路徑解碼還準確,但是所花費的時間以及計算量也比最佳路徑解碼還多。

https://ithelp.ithome.com.tw/upload/images/20210918/20140944we5O9OZRkn.png
圖1: 使用最佳路徑解碼的問題。若是選擇機率最大的路徑會得到'空白' (圖的右上算
式),但是輸出是'A'的所有可能路徑的機率總和卻比輸出'空白'的機率高(圖的右下算
式)

https://ithelp.ithome.com.tw/upload/images/20210918/20140944rkHgdnZVMF.png
圖2: 前綴搜尋解碼。X和Y表示擴展節點,e表示停止在其父節點。擴展節點上方的數字表示路徑從頭到這點的機率。e結點上方的數字表示停在其父節點的機率

在花了幾天的時間說明介紹 end-to-end 相關的模型架構方法之後我們即將要進入實作的部分 ! 首先登場的會是語音特徵擷取與正規化的部分,那我們明天見 !


上一篇
Day05 - 端到端(end-to-end)語音辨識-CTC part 1
下一篇
Day07 - 語音特徵擷取 - MFCC
系列文
機器學習應用於語音相關服務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言